ーーーーHashTableの場合の使い方ーーーー

        Public Hash As New Hashtable()
        Dim a As New test("inaba", "minoru")
        Dim s As New test()
        Hash.Add("t", a) '登録
        s = CType(h.Item("t"), test) ’検索
        s.show()
ーーーーその2ーーーー
       If Hash.ContainsKey(検索するキー) Then があるか?ないか?
            Dim datas As New data()
            datas = CType(Hash.Item(検索するキー), data) 
            TextBox2.Text = datas.no + vbCrLf + datas.kana + vbCrLf + datas.name
        Else
            TextBox2.Text = "該当なし"
        End If
ーーーーArrayListの場合の使い方ーーーー

        Dim Ar As New ArrayList()
        Dim a As New test("inaba", "minoru")
        Dim b As New test("testname", "testdata")
        Dim s As New test()
        Ar.Add(a)
        Ar.Add(b) 追加
	Ar.Insert(1, New test("aaa","iii"))  番号の位置に挿入
    Ar.Item(1) = New test("s", "ss")      番号の位置を入れ替え
        s = CType(Ar.Item(0), test) オブジェクトの再構成
        s.show()
ーーーーその2ーーーー
        If Hash.Contains(検索文字列など) Then があるか?ないか?
            int = Hash.IndexOf(検索文字列など) のある位置
	  TextBox2.Text = Hash.Item(int) 値の取り出し
        Else
            TextBox2.Text = "該当なし"
        End If

ーーーーーーーーーーーーーーーーーーーーーー
int = Object.countで総レコード数が出ます 0から始まる数+1
ーーーーーーーーーーーーーーーーーーーーーー
ーーーー一括保存の仕方ーーーー
        Dim Formatter As New System.Runtime.Serialization.Formatters.Binary.BinaryFormatter()
        Dim FileStream As System.IO.FileStream
        FileStream = New System.IO.FileStream("Test.txt", IO.FileMode.Create)
        Formatter.Serialize(FileStream, Hash)
        FileStream.Close()
ーーーー読み出し方ーーーー
       Dim Formatter As New System.Runtime.Serialization.Formatters.Binary.BinaryFormatter()
        Dim FileStream As System.IO.FileStream
        FileStream = New System.IO.FileStream("Test.txt", IO.FileMode.Open)
        Hash = DirectCast(Formatter.Deserialize(FileStream), Hashtable)
        FileStream.Close()
ーーーー上記のコードで使用するクラスーーーー

<Serializable()>Public Class test ’つけないと一括で保存読み出しができない
    Public name As String
    Public data As String
    Public Sub New()
    End Sub
    Public Sub New(ByVal a As String, ByVal b As String)
        name = a
        data = b
    End Sub
    Public Sub show()
        MsgBox(name + " " + data)
    End Sub
End Class

ーーーーファイルを最後まで読むーーーー
        Dim sr As New System.IO.StreamReader("Data.CSV", System.Text.Encoding.GetEncoding(932))
        '内容を一行ずつ読み込む
        While sr.Peek() > -1

        End While
        '閉じる
        sr.Close()


ーーーー配列の並び替えーーーー
        Dim x(5) As Integer
        x(0) = 1
        x(1) = 4
        x(2) = 2
        Array.Sort(x)
        Dim a As Integer
        For a = 0 To 5
            Console.WriteLine(x(a))
        Next
ーーーーArrayListのソートーーーー
       '普通に並び替え
        Object.Sort()
       '文字列の長さで並び替える
        Dim comp As New LengthComparer()
        Object.Sort(comp)
        Dim a As Integer
        For a = 0 To Object.Count - 1
            Console.WriteLine(Object.Item(a))
        Next

Public Class LengthComparer
    'IComparerインターフェイスを実装する
    Implements System.Collections.IComparer

    'xがyより小さいときはマイナスの数、大きいときはプラスの数、
    '同じときは0を返す
    Public Function Compare(ByVal x As Object, _
            ByVal y As Object) As Integer Implements IComparer.Compare
        Return CType(x, String).Length - CType(y, String).Length
    End Function
End Class
ーーーーArrayListの変数にオブジェクトを入れた場合のソートーーーー
    Dim comp As New LengthComparer()
        Object.Sort(comp)

Public Class LengthComparer
    'IComparerインターフェイスを実装する
    Implements System.Collections.IComparer
    'xがyより小さいときはマイナスの数、大きいときはプラスの数、
    '同じときは0を返す
    Public Function Compare(ByVal x As Object, _
            ByVal y As Object) As Integer Implements IComparer.Compare
        Return CType(x.no, Int32) - CType(y.no, Int32)
    End Function
End Class

<Serializable()> Public Class data
    Public name As String
    Public kana As String
    Public no As Int32
End Class



▲トップページ > Visual BASIC と C#